//----------------------------------------------------------------------------
//
// (C) Copyrights MARIN/MSCN  2004 
//
//----------------------------------------------------------------------------
//
// $Source: $
//
// $State: Exp $
//
// $Locker:  $
//
// $Revision: 1.1 $
//
// $Date: 2002/06/11 14:00:11 $
//
// $Author: mscn $
//
// $Contractor: $
//
// $Project: $
//
// $Log: Util.h,v $
//
// $Description: $
//
// $End: $
//
//----------------------------------------------------------------------------

#ifndef __mst_Util_h__
#define __mst_Util_h__

#if 1

#include "string.h"
#include "stdlib.h"

#else

#include "api.h"

#include "string.h"

#ifdef WIN32

#include <process.h>

typedef int pid_t;
#define MST_GETPID() _getpid()

#else
#include <sys/types.h>
#include <unistd.h>

#define MST_GETPID() ::getpid()
#endif

namespace mst {

/** mst C++ strdup implementation.*/
inline char* strdup(const char *s) 
	{ return (s) ? ::strcpy(new char[strlen(s) + 1], s) : 0L; }
/** mst C++ strdup implementation.*/
inline char* string_dup(const char *s) 
	{ return (s) ? ::strcpy(new char[strlen(s) + 1], s) : 0L; }

/** mst memcpy implementation.*/
inline void* memcpy(void *d, const void *s, size_t n)
	{ return ::memcpy(d, s, n); }
/** mst memcpy implementation.*/
inline void* memory_cpy(void *d, const void *s, size_t n)
	{ return ::memcpy(d, s, n); }

/** mst memset implementation.*/
inline void* memset(void *d, int c, size_t n)
	{ return ::memset(d, c, n); }
/** mst memset implementation.*/
inline void* memory_set(void *d, int c, size_t n)
	{ return ::memset(d, c, n); }

/** mst strcasecmp implementation.*/
inline int strcasecmp(const char *s1, const char *s2)
	{ return ::strcasecmp(s1, s2); }

/** mst strncasecmp implementation.*/
inline int strncasecmp(const char *s1, const char *s2, size_t n)
	{ return ::strncasecmp(s1, s2, n); }

inline pid_t getpid() { return MST_GETPID(); }

}

#endif

#endif

